package cn.psvmc.cxzapi.mapper.store;

import cn.psvmc.cxzapi.config.mybatisplus.mapper.MyBaseMapper;
import cn.psvmc.cxzapi.model.common.SearchEntity;
import cn.psvmc.cxzapi.model.store.TCoupon;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 优惠券表 Mapper 接口
 * @Author auto
 * @Date 2024-08-15
 */
public interface TCouponMapper extends MyBaseMapper<TCoupon> {

    //管理列表
    IPage<Map> listAll(Page<TCoupon> iPage,@Param("entity") SearchEntity entity);

    //根据优惠券ID查询优惠券
    TCoupon findById(@Param("couponid") Integer couponid);

    //删除原有用户和商品
    void deleteCustomerAndGoods(@Param("couponid") Integer couponid);

    //根据优惠券ID查询优惠券详情
    Map findByCouponId(@Param("couponid") Integer id);

    //根据优惠券编码查询优惠券
    TCoupon selectByCode(@Param("couponCode") String couponCode);

    //定时任务更新优惠券状态
    void updateCouponDeleted(@Param("now") LocalDateTime now);

    //根据优惠券ID删除优惠券
    void deleteByCouponId(@Param("couponid") Integer couponid);

    //更新优惠券可用数量
    void updateUseNum(@Param("couponids") Object couponids);

    //根据优惠券ID查询已领取数量
    Integer getNumByCouponId(@Param("couponid") Integer couponid);

    //定时任务更新用户优惠券使用状态
    void updateCustomerUsed(@Param("now") LocalDateTime now);

    //获取优惠券可用商品名称和原价
    Map<String, String> getLimitGoods(@Param("id") Integer id, @Param("type") Integer type);

    //获取使用券的信息
    Map<String, String> getUseCouponByCouponId(@Param("couponid") Integer couponid);

    //根据活动id获取优惠券信息
    TCoupon findByActivityId(@Param("activityId") String activityId);

    //根据客户id获取活动id
    List<String> listActivityIdByCustomerId(@Param("customerid") int customerid);

    //修改支付宝券状态
    void updateStatusByActivityId(@Param("activityId") String activityId, @Param("couponStatus") Integer couponStatus);

    //删除支付宝券
    void updateDeletedByActivityId(@Param("activityId") String activityId);

    //获取用户已领取的优惠券
    TCoupon getUseCouponByCouponIdAndCustomerId(@Param("couponid") Integer couponid, @Param("customerid") Integer customerid);
}
